package com.briup.day09;

/**
 * @author 谭梦寻
 * @version 1.1
 */
/*
    包装：解决基本数据类型不能对面向对象问题
       == equals 区别
       基本数据类型： 1==2 true == false 比较的数值 二进制代码是否相同
       引用数据类型： equals 比较的两个引用是否实质相同一个对象 比较地址值（哈希值）
       equals 只能比较引用类型 即对象
       如果equals没有被重写  就使用时Object类中提供的逻辑 比较两个引用的地址值是否相等
       如果equals被重写了 就是重写后的逻辑
       比较包装类型的数值大小

 */
public class TestInteger {
    public void method() {
//        1 创建java.lang.Integer对象
        Integer integer = new Integer(12);
        Integer i2 = new Integer("12");
        System.out.println(integer);//12
        System.out.println(i2);//12
//        调用静态方法
        String num = Integer.toBinaryString(8);
        System.out.println(num);//1000
        int num2 = Integer.parseInt("231");
        System.out.println(num2);//231
        int a = 100;
        String b = a + "";
        System.out.println(b);//字符串100
//        上面等价于
        System.out.println(Integer.toString(a));//字符串100
//        Integer b2 = Integer.valueOf("qwe");
//        System.out.println(b2);//报错 NumberFormatException: For input string: "qwe"
        Boolean bool = integer.equals(i2);
        System.out.println(bool);//true
//       转换方法将 Integer类型转换为其他整型和浮点型 不能转换为char和boolean

        Double aDouble = new Double("3.2");
        Double aDouble1 = Double.valueOf("3.14");
        System.out.println(aDouble1);//3.14

//        自动装箱 对应的包装类型：int --> Integer
        Integer i = 2;//从常量池中获取
//        自动拆箱 对应的包装类型：Integer --> int
//        自动装箱：基本数据类型值 自动转化为 包装类对象
//        自动拆箱：包装类对象 自动转化为 基本数据类型值
        int num3 = new Integer(2);
        Integer o = new Integer(2);//
//自动拆箱，这里会自动把对象o拆箱为一个int类型的数字，并把数字
//        赋值给int类型的变量i
        int i3 = o;
        //这里会自动把对象o拆箱为一个int类型的数字，并把数字赋值给int类型的变量i3
        int i4 = 2;
        System.out.println(i4 == i);//true
        Integer num4 = new Integer(2);
        System.out.println(num4 == i4);//true
        System.out.println(num4 == i);//false
        System.out.println(num4 == o);//false 不同的对象地址


    }
    public static void main(String[] args) {
        TestInteger test = new TestInteger();
        test.method();
    }
}
